יש לי אתר צ'אט שפועל על PHP (איסנכרוני, Ratchet), אני צריך שתהיה היסטוריית הודעות לזמן מסויים,
איזה דרך יותר עדיפה- אחסון ההודעות במערך כלשהו על השרת או הכנסה לטבלה במסד?
או שקיימת דרך יותר טובה- אשמח לשמוע.
תודה!

1 תשובות

avatar ענה intval ב 09 לינואר 2016 #

נהא האפשרויות שלך ומה ההשלכות שלהן:

א. מערך
יתרונות: קל, קריאה מהירה
חסרונות: מוגבל בכמות בגודל כמות ואורך, עלול לגרום לסיום הזיכרון בשרת וקריסה עם טקסטים ארוכים, לא שומר הודעות אחרי ריסטרט, לא מאפשר הרחבה (למשל אם תרצה להוסיף עוד שרת בגלל כמות משתמשים גדולה)
מתי להשתמש: כשלא איכפת לך שההודעות לא נשמרות בין ריסטרטים, כמות הודעות משוערת קטנה או אין צורך בשימרת כל ההודעות, אלא נגיד רק מאה האחרונות


מסד:
יתרונות: שומר לתווך ארוך, גודל וכמות לא מגובלים, הגדלה של כמות שרתי התוכנה יהיה יחסית פשוט
חסרונות: איטי לעומת מערך, דורש זמן מעבד נוסף ותוכנה נוספת רצה, דורש ניקוי מתמיד(?)
מתי להשתמש: כנראה הדרך העדיפה בשבילך עכשיו אם החלטת שאתה חייב יותר ממאה הודעות אחרונות וגם אחרי ריסטרט

redis / memcached / zeromq
חסרונות: מסובך רצח
יתרונות: הדבר הכי מתאים להשתמש בו אם אתה מתכנן סקייל גדול
מתי להשתמש: אולי תחזור לנושא הזה אחרי מליון המשתמשים הראשונים.